#生成   a-z A-Z 0-9的样本

#首先做一个映射表
#对常见的几种英文字体生成就行了 （其实后期可以在加的）
#生成策略目前只考虑， 斜体、粗体、字号、位置  4中情况
#要使用多进程，为了高效率

#借鉴别人的思路，标签就是文件夹名字，样本放文件夹中     先用这种吧，毕竟数据量也不大，先从简单的角度来搞搞
#使用pandas之类的工具，其实这种方式效率肯定高一些的。。。


#必须要用多种字体试试！！！！！！！

import numpy as np
import cv2
import os
import random
import my_ascll_dict
from PIL import Image,ImageFont,ImageDraw

#获取tmp的文件名到数组中
def get_file_list(path):
    list_name=[]
    files = os.listdir(path)
    files.sort()
    for file in files:
        file_path = os.path.join(path, file)
        list_name.append(file_path)
    return list_name

#获取标签-实际字符映射表
dicta = my_ascll_dict.getmyasclldict()
print(dicta)

#获取所有的字体文件
fontfilelist = get_file_list('./font')
print( fontfilelist)


folder = r'C:\Users\he\Desktop\dataset'

count = 0

for onechar in dicta:
    os.mkdir(folder + "/%d" % onechar)

    print('now generate %d index...'%onechar)
    index = 1


    for fontfile in fontfilelist:

        for fontsize in range(12,28):

            # 获取pil的绘图对象
            black = Image.new("RGB", [28, 28], "black")
            drawobj = ImageDraw.Draw(black)

            ft = ImageFont.truetype(fontfile, fontsize)
            drawobj.text(((28-fontsize)/2,(28-fontsize)/2 ), dicta[onechar], font = ft, fill = 'white')

            black.save(folder + "/%d/%d.png" % (onechar,index))
            index += 1
            count += 1

            #if count > 1000:
                #exit()











#black.show()

